class BuildTask(object):
  """Represents a buildable entity managed by the builder."""
  
  def __init__(self):
    """Initializes a new empty BuildTask."""
    self._state = 'new'   # Used by the builder.
    self.inputs = []  # Dependencies set by the client and expanded by the builder.
    self.outputs = []  # Outputs.
  
  def expand_outputs(self):
    return self.outputs
    
  def build(self):
    """Called by the builder when it needs to build the output.
    Any dependency in the inputs is resolved when this method is invoked."""
    pass
